#ifndef TESTS_HPP
#define TESTS_HPP

#include <functional>

namespace Tests {

using TestFuncType = std::function<void()>;

// Used test case
const int USED_TEST_CASES = 2;

// all test case
const int ALL_TEST_CASES = 20;

void TestVector();

void SimpleUVTest();

void SimpleRayCasterTest();

void GaussionProfileTest();
void HighFrequencySignalPointSampleTest();
void HightFrequencySignalBoxSampleTest();

void MultiSamplePerPixelX32();
void MultiSamplePerPixelX16();
void MultiSamplePerPixelX8();
void MultiSamplePerPixelX4();

void GridSample_x4();
void GridSample_x8();

void NRooksSamplePerPixelx4();
void NRooksSamplePerPixelx8();

void JitteredSamplePerPixel();
void MultiJitteredSamplePerPixel();

void SimpleCameraTest();
void ThinLensCameraTest();

void PerlinNoiseTest();

void CleanResource();

extern TestFuncType tests[];

} // namespace Tests

#endif